"""
题目描述：用两个栈实现一个队列。队列的声明如下，请实现它的两个函数 appendTail 和 deleteHead
分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素，deleteHead 操作返回 -1)
"""
class CQueue:
    def __init__(self):
        """初始化两个栈，一个用于输入，一个用于输出"""
        self.stack_in = []  # 输入栈，用于添加元素
        self.stack_out = []  # 输出栈，用于删除元素

    def appendTail(self, value: int) -> None:
        """在队列尾部插入整数"""
        # 直接将元素压入输入栈
        self.stack_in.append(value)

    def deleteHead(self) -> int:
        """在队列头部删除整数"""
        # 如果输出栈为空，将输入栈的所有元素转移到输出栈
        if not self.stack_out:
            # 当输入栈也为空时，返回-1
            if not self.stack_in:
                return -1
            # 将输入栈元素全部转移到输出栈
            while self.stack_in:
                #注意：这里最后用的是stack_in的pop方法，不要忽视：是为了实现 “栈的后进先出” 特性，从而让元素在两个栈之间转移时，顺序发生反转，最终模拟出队列 “先进先出” 的效果
                #让两个栈的组合最终表现出队列 “先进先出” 的行为
                self.stack_out.append(self.stack_in.pop())
        # 弹出输出栈的栈顶元素（即队列的头部元素）
        return self.stack_out.pop()


# 测试示例
obj = CQueue()
obj.appendTail(3)
print(obj.deleteHead())  # 3
print(obj.deleteHead())  # -1